﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace _2017._01._15.CustomerAndBank
{
    class Customer
    {
        private string firstName;
        private string lastName;
        public decimal currentMoney;
        public decimal CurrentMoney
        {
            get
            {
                return currentMoney;
            }
            set
            {
                if (value > 0)
                    currentMoney = value;
                else Console.WriteLine();
            }
        }
        private int accountNumber;
        

        public void FillValues()
        {
            Console.WriteLine("Введите фамилию пользователя: ");
            lastName = Console.ReadLine();
            Console.WriteLine("Введите имя пользователя: ");
            firstName = Console.ReadLine();
            Console.WriteLine("Номер счета: ");
        }
    }

    class Account
    {
        private int id;
        private static int AccountCounter { get; set; }
        private decimal money;
        public decimal Money
        {
            get
            {
                return money;
            }
            private set
            {
                if (value > 0)
                    money = value;
                else Console.WriteLine("Невозможно совершить действие");
            }
        }
        public int Id { get; set; }
        public Account()
        {
            id = ++AccountCounter;
        }
        public Account(int id)
        {

        }

        public int Create()
        {
            Console.WriteLine("Номер счета: ");
            Console.WriteLine(id);
            Console.WriteLine("Количество денег на счет: ");
            Money = Int32.Parse(Console.ReadLine());
            return id;
        }
        public void InputMoney(int id)
        {
            Console.WriteLine("Сколько Вы хотите положить на счет:");
            money = money + Int32.Parse(Console.ReadLine());
        }

        public void GetMoney(int id)
        {
            Console.WriteLine("Какое количество денег Вы хотите снять: ");
            int cash = Int32.Parse(Console.ReadLine());
            if ((cash < 0) || (cash > money))
                Console.WriteLine("Операция невоможна");
            else
            {
                money = money - cash;
            }
            
        }
        
    }
    class Bank: Account
    {
        private List<Account> accounts = new List<Account>();

        public void OpenAccount()
        {
            accounts.Add(new Account(Create()));
        }
        
        public void GetCash(int accountNumber)
        {
            foreach (Account account in accounts)
            {
                if (accountNumber != Id)
                    Console.WriteLine("Операция невоможна");
                else GetMoney(accountNumber);
            }
        }
        public void GetBalance(int accountNumber)
        {
            foreach (Account account in accounts)
            {
                if (accountNumber != Id)
                    Console.WriteLine("Операция невоможна");
                else Console.WriteLine("Ваш баланс составляет: {0}", Money);
            }
        }

        public void InputCash(int accountNumber)
        {
            foreach (Account account in accounts)
            {
                if (accountNumber != Id)
                    Console.WriteLine("Операция невоможна");
                else InputMoney(accountNumber);
            }
        }

        public void Close(int accountNumber)
        {
            for (int i = 0; i >= accounts.Count(); i++)
            {
                if (accountNumber != Id)
                    Console.WriteLine("Операция невоможна");
                else accounts.RemoveAt(Id);
            }
        }
    }
}
